02. Conditional Statements
If Statements
If Statement
An if statement is a conditional statement that runs or skips code based on whether a condition is true or false. Here's a simple example.
if phone_balance < 5:
phone_balance += 10
bank_balance -= 10
Let's break this down.
- An
ifstatement starts with theifkeyword, followed by the condition to be checked, in this casephone_balance < 5, and then a colon. The condition is specified in a boolean expression that evaluates to either True or False. - After this line is an indented block of code to be executed if that condition is true. Here, the lines that increment
phone_balanceand decrementbank_balanceonly execute if it is true thatphone_balanceis less than 5. If not, the code in thisifblock is simply skipped.
Use Comparison Operators in Conditional Statements
You have learned about Python's comparison operators (e.g. == and !=) and how they are different from assignment operators (e.g. =). In conditional statements, you want to use comparison operators. For example, you'd want to use if x == 5 rather than if x = 5. If your conditional statement is causing a syntax error or doing something unexpected, check whether you have written == or =!
If Elif and Else
If, Elif, Else
In addition to the if clause, there are two other optional clauses often used with an if statement. For example:
if season == 'spring':
print('plant the garden!')
elif season == 'summer':
print('water the garden!')
elif season == 'fall':
print('harvest the garden!')
elif season == 'winter':
print('stay indoors!')
else:
print('unrecognized season')
if: Anifstatement must always start with anifclause, which contains the first condition that is checked. If this evaluates to True, Python runs the code indented in thisifblock and then skips to the rest of the code after theifstatement.elif:elifis short for "else if." Anelifclause is used to check for an additional condition if the conditions in the previous clauses in theifstatement evaluate to False. As you can see in the example, you can have multipleelifblocks to handle different situations.else: Last is theelseclause, which must come at the end of anifstatement if used. This clause doesn't require a condition. The code in anelseblock is run if all conditions above that in theifstatement evaluate to False.
Indentation
Indentation
Some other languages use braces to show where blocks of code begin and end. In Python we use indentation to enclose blocks of code. For example, if statements use indentation to tell Python what code is inside and outside of different clauses.
In Python, indents conventionally come in multiples of four spaces. Be strict about following this convention, because changing the indentation can completely change the meaning of the code. If you are working on a team of Python programmers, it's important that everyone follows the same indentation convention!
Spaces or Tabs?
The Python Style Guide recommends using 4 spaces to indent, rather than using a tab. Whichever you use, be aware that "Python 3 disallows mixing the use of tabs and spaces for indentation."
Try It Out!
Use Test Run to execute the following code, which includes several examples of if statements. Experiment with different inputs and see what is printed out. Can you follow the flow of logic to figure out which code lines will get run? If you're not sure, you can insert additional print statements to help you figure out how it works.
Start Quiz:
#First Example - try changing the value of phone_balance
phone_balance = 10
bank_balance = 50
if phone_balance < 10:
phone_balance += 10
bank_balance -= 10
print(phone_balance)
print(bank_balance)
#Second Example - try changing the value of number
number = 145
if number % 2 == 0:
print("Number " + str(number) + " is even.")
else:
print("Number " + str(number) + " is odd.")
#Third Example - try to change the value of age
age = 35
# Here are the age limits for bus fares
free_up_to_age = 4
child_up_to_age = 18
senior_from_age = 65
# These lines determine the bus fare prices
concession_ticket = 1.25
adult_ticket = 2.50
# Here is the logic for bus fare prices
if age <= free_up_to_age:
ticket_price = 0
elif age <= child_up_to_age:
ticket_price = concession_ticket
elif age >= senior_from_age:
ticket_price = concession_ticket
else:
ticket_price = adult_ticket
message = "Somebody who is {} years old will pay ${} to ride the bus.".format(age, ticket_price)
print(message)